package com.sg.dto.biz.framework.req;

import com.sg.dto.base.framework.req.DeptDto;
import com.sg.dto.biz.framework.common.DeptAdminAndDeputyDto;
import com.sg.dto.biz.framework.common.PowerCodeListDto;
import com.sg.dto.biz.framework.res.OrgInductionRecordDto;
import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


/**
 * @desc QueryReceiveFieldDetailReqDto
 * @使用场景
 */
@Data
public class QueryReceiveFieldDetailReqDto extends BaseDto implements Serializable {

    /**
     * 输入数值
     */
    @NotNull(message = "输入数值不能为空")
    @ApiModelProperty("输入数值")
    private Long inputNum;
    /**
     * 批次下更新状态 NEW:本次新增 UNCHANGED:正常未变 REVISION:本次修订 ARCHIVE:本次存档
     */
    @NotNull(message = "批次下更新状态不能为空")
    @ApiModelProperty("批次下更新状态")
    private String updateStatus;
    /**
     * 批次处理进度
     */
    @NotNull(message = "批次处理进度不能为空")
    @ApiModelProperty("批次处理进度")
    private Long batchHandleSpeed;

    /**
     * 批次处理步骤
     */
    @NotNull(message = "批次处理步骤不能为空")
    @ApiModelProperty("批次处理步骤")
    private String batchHandleStep;

    /**
     * 批次处理类型 PLAN_EVA_BATCH_PUBLISH:评价模板发布批次 PLAN_EVA_DELETE_BATCH:评价模板撤销批次 ORG_BATCH_PUBLISH:组织架构批次发布 ORG_DELETE_BATCH:组织架构批次撤销
     */
    @NotNull(message = "批次处理类型不能为空")
    @ApiModelProperty("批次处理类型")
    private String batchHandleTypeCod;
    /**
     * 开始管理
     */
    @NotNull(message = "开始管理不能为空")
    @ApiModelProperty("开始管理")
    private String startMgtObj;
    /**
     * 暂停对外使用
     */
    @NotNull(message = "暂停对外使用不能为空")
    @ApiModelProperty("暂停对外使用")
    private String suspendedObj;
    /**
     * 恢复对外使用
     */
    @NotNull(message = "恢复对外使用不能为空")
    @ApiModelProperty("恢复对外使用")
    private String restoreObj;
    /**
     * 发布生效
     */
    @NotNull(message = "发布生效不能为空")
    @ApiModelProperty("发布生效")
    private String releaseEffectObj;
    /**
     * 取消设置完成
     */
    @NotNull(message = "取消设置完成不能为空")
    @ApiModelProperty("取消设置完成")
    private String cancelSetCompleteObj;
    /**
     * 确认设置完成
     */
    @NotNull(message = "确认设置完成不能为空")
    @ApiModelProperty("确认设置完成")
    private String setCompleteObj;
    /**
     * 撤销修订
     */
    @NotNull(message = "撤销修订不能为空")
    @ApiModelProperty("撤销修订")
    private String cancelRevisionObj;
    /**
     * 变更记录
     */
    @NotNull(message = "变更记录不能为空")
    @ApiModelProperty("变更记录")
    private String changeRecordObj;
    /**
     * 锁定原因
     */
    @NotNull(message = "锁定原因不能为空")
    @ApiModelProperty("锁定原因")
    private String lockReasonObj;
    /**
     * 管理操作
     */
    @NotNull(message = "管理操作不能为空")
    @ApiModelProperty("管理操作")
    private String mgtOpeObj;
    /**
     * 首次操作
     */
    @NotNull(message = "首次操作不能为空")
    @ApiModelProperty("首次操作")
    private String firstOperation;
    /**
     * 批次现状
     */
    @NotNull(message = "批次现状不能为空")
    @ApiModelProperty("批次现状")
    private String batchCurrentStatus;
    /**
     * 后续操作
     */
    @NotNull(message = "后续操作不能为空")
    @ApiModelProperty("后续操作")
    private String trailingOperation;
    /**
     * 混合操作
     */
    @NotNull(message = "混合操作不能为空")
    @ApiModelProperty("混合操作")
    private String mixtureOperation;
    /**
     * 批次下管理操作类型 START_MGT_OBJ:开始管理 SET_COMPLETE_OBJ:确认设置完成 CANCEL_SET_COMPLETE_OBJ:取消设置完成 RELEASE_EFFECT_OBJ:发布生效 CANCEL_REVISION_OBJ:撤销修订 CHANGE_RECORD_OBJ:变更记录 SUSPENDED_OBJ:暂停对外使用 RESTORE_OBJ:恢复对外使用 LOCK_REASON_OBJ:锁定原因 BATCH_CURRENT_STATUS:批次现状 FIRST_OPERATION:首次操作 TRAILING_OPERATION:后续操作 MIXTURE_OPERATION:混合操作
     */
    @NotNull(message = "批次下管理操作类型不能为空")
    @ApiModelProperty("批次下管理操作类型")
    private String batchMgtOperationType;
    /**
     * 管理权限类型 MIS_MANAGE:不可管理 FIRST_MANAGE:首次管理 FOLLOW_MANAGE:后续管理 CUR_MANAGE:当前正在管理
     */
    @NotNull(message = "管理权限类型不能为空")
    @ApiModelProperty("管理权限类型")
    private String enterMgtPowerType;
    /**
     * 身份人员ID
     */
    @NotNull(message = "身份人员ID不能为空")
    @ApiModelProperty("身份人员ID")
    private String originalRoleMemberId;
    /**
     * 传输数值
     */
    @NotNull(message = "传输数值不能为空")
    @ApiModelProperty("传输数值")
    private Long outputNum;
    /**
     * 部门开始管理
     */
    @NotNull(message = "部门开始管理不能为空")
    @ApiModelProperty("部门开始管理")
    private String deptStartMgt;
    /**
     * 部门维护完成
     */
    @NotNull(message = "部门维护完成不能为空")
    @ApiModelProperty("部门维护完成")
    private String deptPreserveAchieve;
    /**
     * 部门管理权限类型 MIS_MANAGE:不可管理 CUR_MANAGE:当前正在管理 MANAGE:可管理
     */
    @NotNull(message = "部门管理权限类型不能为空")
    @ApiModelProperty("部门管理权限类型")
    private String deptEnterMgtPowerType;
    /**
     * 部门管理操作
     */
    @NotNull(message = "部门管理操作不能为空")
    @ApiModelProperty("部门管理操作")
    private String deptOperation;
    /**
     * 部门ID
     */
    @ApiModelProperty("部门ID")
    private String deptId;

    /**
     * 就职单位类型实例 ORG:组织 DEPT:部门
     */
    @NotNull(message = "就职单位类型实例不能为空")
    @ApiModelProperty("就职单位类型实例")
    private String inductionUnitTypeCode;
    /**
     * 绑定手机
     */
    @ApiModelProperty("绑定手机")
    private String phone;

    /**
     * 身份人员编号
     */
    @ApiModelProperty("身份人员编号")
    private String roleMemberCode;

    /**
     * 用户名
     */
    @ApiModelProperty("用户名")
    private String userName;

    /**
     * 密码
     */
    @ApiModelProperty("密码")
    private String password;

    /**
     * 验证码
     */
    @ApiModelProperty("验证码")
    private String verificationCode;
    /**
     * 成员开始管理数据正确主条件 MIS_MANAGE:不可管理 FIRST_MANAGE:首次管理 FOLLOW_MANAGE:后续管理 CUR_MANAGE:当前正在管理
     */
    @NotNull(message = "成员开始管理数据正确主条件不能为空")
    @ApiModelProperty("成员开始管理数据正确主条件")
    private String memStartMgtDataCon;
    /**
     * 部门开始管理数据正确主条件 MIS_MANAGE:不可管理 CUR_MANAGE:当前正在管理 MANAGE:可管理
     */
    @NotNull(message = "部门开始管理数据正确主条件不能为空")
    @ApiModelProperty("部门开始管理数据正确主条件")
    private String deptStartMgtDataCon;
    /**
     * 是否正副职 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否正副职")
    private String isDeputy;
    /**
     * 部门变更记录
     */
    @ApiModelProperty("部门变更记录")
    private String deptChangeRecordObj;
    /**
     * 组织架构管理场景 ORG_CAN_MGT_SEN:组织架构可以开始管理场景 MEM_FIR_BATCH_MGT_SEN:成员首次批次管理场景 MEM_SUB_BATCH_MGT_SEN:成员后续批次管理场景 DEPT_MGT_SEN:部门管理场景
     */
    @NotNull(message = "组织架构管理场景不能为空")
    @ApiModelProperty("组织架构管理场景")
    private String memtMgtSence;
    /**
     * 就职记录ID
     */
    @NotNull(message = "就职记录ID不能为空")
    @ApiModelProperty("就职记录ID")
    private String inductionRecordId;

    /**
     * 创建于空间ID
     */
    @NotNull(message = "创建于空间ID不能为空")
    @ApiModelProperty("创建于空间ID")
    private String spaceId;
    /**
     * 修订主体内容
     */
    @NotNull(message = "修订主体内容不能为空")
    @ApiModelProperty("修订主体内容")
    private String reviseSubjectContent;

    /**
     * 修订行为名称
     */
    @NotNull(message = "修订行为名称不能为空")
    @ApiModelProperty("修订行为名称")
    private String reviseBehaviorName;

    /**
     * 变更字段中文内容
     */
    @NotNull(message = "变更字段中文内容不能为空")
    @ApiModelProperty("变更字段中文内容")
    private String columnContent;
    /**
     * 存档行为名称
     */
    @NotNull(message = "存档行为名称不能为空")
    @ApiModelProperty("存档行为名称")
    private String archiveBehaviorName;

    /**
     * 存档主体内容
     */
    @NotNull(message = "存档主体内容不能为空")
    @ApiModelProperty("存档主体内容")
    private String archiveSubjectContent;

    /**
     * 主体内容归属父对象
     */
    @NotNull(message = "主体内容归属父对象不能为空")
    @ApiModelProperty("主体内容归属父对象")
    private String subjectContAffiliationParentCont;
    /**
     * 新增主体内容
     */
    @NotNull(message = "新增主体内容不能为空")
    @ApiModelProperty("新增主体内容")
    private String addSubjectContent;

    /**
     * 新增行为名称
     */
    @NotNull(message = "新增行为名称不能为空")
    @ApiModelProperty("新增行为名称")
    private String addBehaviorName;
    /**
     * 批次ID
     */
    @ApiModelProperty("批次ID")
    private String batchId;

    /**
     * 批次结束时间
     */
    @ApiModelProperty("批次结束时间")
    private Date batchEndTime;

    /**
     * 是否未来 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否未来不能为空")
    @ApiModelProperty("是否未来")
    private String isEditing;

    /**
     * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
     */
    @NotNull(message = "主体生命周期不能为空")
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;
    /**
     * 批次开始时间
     */
    @ApiModelProperty("批次开始时间")
    private Date batchStartTime;
    /**
     * 原始字段中文内容
     */
    @NotNull(message = "原始字段中文内容不能为空")
    @ApiModelProperty("原始字段中文内容")
    private String oriColumnContent;
    /**
     * 可选主管就职记录ID
     */
    @NotNull(message = "可选主管就职记录ID不能为空")
    @ApiModelProperty("可选主管就职记录ID")
    private String directorInductionRecordId;
    /**
     * 是否可编辑 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否可编辑不能为空")
    @ApiModelProperty("是否可编辑")
    private String isEditable;
    /**
     * 部门类型字典ID
     */
    @NotNull(message = "部门类型字典ID不能为空")
    @ApiModelProperty("部门类型字典ID")
    private String typeDictionaryId;
    @ApiModelProperty("部门列表")
    private List<DeptDto> deptList = new ArrayList<>();
    /**
     * 下属部门情况 SUBORDINATE_ALL:下级全部有部门 SUBORDINATE_PART_DEPT:下级部分有部门 SUBORDINATE_NO:下级全部无部门
     */
    @NotNull(message = "下属部门情况 不能为空")
    @ApiModelProperty("下属部门情况 ")
    private String subordinateDivType;
    /**
     * 授权证书ID
     */
    @NotNull(message = "授权证书ID不能为空")
    @ApiModelProperty("授权证书ID")
    private String authorizationId;
    /**
     * 个人资料记录ID
     */
    @NotNull(message = "个人资料记录ID不能为空")
    @ApiModelProperty("个人资料记录ID")
    private String personalDataId;

    /**
     * 账号
     */
    @NotNull(message = "账号不能为空")
    @ApiModelProperty("账号")
    private String userId;

    /**
     * 密保问题
     */
    @NotNull(message = "密保问题不能为空")
    @ApiModelProperty("密保问题")
    private String myPwdProblem;

    /**
     * 创建于联盟应用ID
     */
    @NotNull(message = "创建于联盟应用ID不能为空")
    @ApiModelProperty("创建于联盟应用ID")
    private String appId;
    /**
     * 真实姓名
     */
    @NotNull(message = "真实姓名不能为空")
    @ApiModelProperty("真实姓名")
    private String idCardName;

    /**
     * 真实头像
     */
    @NotNull(message = "真实头像不能为空")
    @ApiModelProperty("真实头像")
    private String userFace;
    /**
     * 自定义字段
     */
    @ApiModelProperty("自定义字段")
    private String customField;

    /**
     * 自定义字段1
     */
    @ApiModelProperty("自定义字段1")
    private String customField1;

    /**
     * 自定义字段2
     */
    @ApiModelProperty("自定义字段2")
    private String customField2;

    /**
     * 自定义字段3
     */
    @ApiModelProperty("自定义字段3")
    private String customField3;

    /**
     * 租户空间ID
     */
    @ApiModelProperty("租户空间ID")
    private String authorizationSpaceId;

    /**
     * 自定义字段4
     */
    @ApiModelProperty("自定义字段4")
    private String customField4;

    /**
     * 自定义字段5
     */
    @ApiModelProperty("自定义字段5")
    private String customField5;

    /**
     * 自定义字段6
     */
    @ApiModelProperty("自定义字段6")
    private String customField6;

    /**
     * 自定义字段7
     */
    @ApiModelProperty("自定义字段7")
    private String customField7;

    /**
     * 自定义字段8
     */
    @ApiModelProperty("自定义字段8")
    private String customField8;

    /**
     * 管理的空间ID
     */
    @ApiModelProperty("管理的空间ID")
    private String uniqueSpaceId;
    /**
     * 发送方是否助手 TRUE:是 FALSE:否
     */
    @NotNull(message = "发送方是否助手不能为空")
    @ApiModelProperty("发送方是否助手")
    private String isAssistant;

    /**
     * 发送方角色 SYSTEM:第三方系统 USER:用户 ASSISTANT:助手
     */
    @NotNull(message = "发送方角色不能为空")
    @ApiModelProperty("发送方角色")
    private String messageRole;

    /**
     * 发送方身份人员ID
     */
    @ApiModelProperty("发送方身份人员ID")
    private String senderOriginalRoleMemberId;

    /**
     * 发送方账号ID
     */
    @ApiModelProperty("发送方账号ID")
    private String senderUserId;

    /**
     * 发送方头像地址
     */
    @ApiModelProperty("发送方头像地址")
    private String senderProfilePictureAddress;

    /**
     * 发送方姓名
     */
    @ApiModelProperty("发送方姓名")
    private String nameOfSender;

    /**
     * 发送方空间ID
     */
    @ApiModelProperty("发送方空间ID")
    private String senderSpaceId;

    /**
     * 发送方联盟应用ID
     */
    @ApiModelProperty("发送方联盟应用ID")
    private String senderAppId;
    /**
     * 认证中心登录地址
     */
    @ApiModelProperty("认证中心登录地址")
    private String authLoginUrl;

    /**
     * 认证中心登出地址
     */
    @ApiModelProperty("认证中心登出地址")
    private String authLogoutUrl;

    /**
     * 认证中心验证票据地址
     */
    @ApiModelProperty("认证中心验证票据地址")
    private String authCheckTicketUrl;

    /**
     * 应用回调地址
     */
    @ApiModelProperty("应用回调地址")
    private String appCallBackUrl;
    /**
     * 是否 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否不能为空")
    @ApiModelProperty("是否")
    private String tureOrFalse;
    /**
     * 是否主岗 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否主岗不能为空")
    @ApiModelProperty("是否主岗")
    private String isMainInduction;
    /**
     * 设主岗元素
     */
    @NotNull(message = "设主岗元素不能为空")
    @ApiModelProperty("设主岗元素")
    private Long setMajorPositionElement;
    @ApiModelProperty("部门管理员及正副职列表")
    private List<DeptAdminAndDeputyDto> deptAdminAndDeputyList = new ArrayList<>();
    @ApiModelProperty("就职记录列表")
    private List<OrgInductionRecordDto> orgInductionRecordList = new ArrayList<>();
    /**
     * 部门管理者获取条件 ALL:全部 PRINCIPAL:正职 PRINCIPAL_DEPUTY:正副职 ONLY_ADMIN:仅管理员
     */
    @NotNull(message = "部门管理者获取条件不能为空")
    @ApiModelProperty("部门管理者获取条件")
    private String deptDeputyCondition;

    /**
     * 权限标识
     */
    @NotNull(message = "权限标识不能为空")
    @ApiModelProperty("权限标识")
    private String privacyCode;
    /**
     * 发送方就职部门ID
     */
    @NotNull(message = "发送方就职部门ID不能为空")
    @ApiModelProperty("发送方就职部门ID")
    private String senderDeptId;

    /**
     * 发送方就职记录ID
     */
    @NotNull(message = "发送方就职记录ID不能为空")
    @ApiModelProperty("发送方就职记录ID")
    private String senderInductionRecordId;
    /**
     * 组织ID
     */
    @ApiModelProperty("组织ID")
    private String organizationId;

    /**
     * 是否系统数据 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否系统数据")
    private String isSystemData;
    /**
     * 部门业务身份 EDUCATIONAL_ADMINISTRATION:教务 TEACHING_DEPARTMENT:教学部门 LEARNING_INDUSTRIAL_PRODUCTION:学工 PERSONNEL_MATTERS:人事 FINANCE:财务 SCHOOL_LEADER:校领导 TOP_LEVEL:高层
     */
    @NotNull(message = "部门业务身份不能为空")
    @ApiModelProperty("部门业务身份")
    private String deptBusinessIdentity;
    /**
     * 数据对象批次标识
     */
    @NotNull(message = "数据对象批次标识不能为空")
    @ApiModelProperty("数据对象批次标识")
    private String dataObjectBatchCode;
    /**
     * 版权归属对象ID
     */
    @NotNull(message = "版权归属对象ID不能为空")
    @ApiModelProperty("版权归属对象ID")
    private String copyrightObjectId;

    /**
     * 版权归属对象名称
     */
    @NotNull(message = "版权归属对象名称不能为空")
    @ApiModelProperty("版权归属对象名称")
    private String copyrightObjectName;
    /**
     * 主题标识
     */
    @NotNull(message = "主题标识不能为空")
    @ApiModelProperty("主题标识")
    private String themeCode;
    /**
     * 计算开始时间
     */
    @NotNull(message = "计算开始时间不能为空")
    @ApiModelProperty("计算开始时间")
    private Date calcStartTime;
    /**
     * 类型字典编码
     */
    @NotNull(message = "类型字典编码不能为空")
    @ApiModelProperty("类型字典编码")
    private String typeDictionaryCode;

    /**
     * 层级
     */
    @NotNull(message = "层级不能为空")
    @ApiModelProperty("层级")
    private Long levelNumber;
    @ApiModelProperty("任务分类列表 ")
    List<String> taskCategoriesList = new ArrayList<>();
    @ApiModelProperty("权限Code列表")
    private List<PowerCodeListDto> powerCodeList = new ArrayList<>();


}
   